package cn.jbolt.core.kit;

import cn.jbolt.core.bean.JBoltOfModuleInfo;
import com.alibaba.ttl.TransmittableThreadLocal;

public class JBoltCurrentOfModuleKit {
    /**
     * 当前属于哪个模块指定访问
     */
    private static final TransmittableThreadLocal<JBoltOfModuleInfo> jboltOfModuleInfoTL = new TransmittableThreadLocal<JBoltOfModuleInfo>();

    /**
     * 设置当前访问的是哪个模块 一般用不上 特殊情况使用
     * @param ofModuleInfo
     */
    public static void setJboltOfModuleInfo(JBoltOfModuleInfo ofModuleInfo){
        jboltOfModuleInfoTL.set(ofModuleInfo);
    }

    /**
     * 获取当前访问的是哪个模块 一般用不上 特殊情况使用
     */
    public static JBoltOfModuleInfo getJboltOfModuleInfo(){
        return jboltOfModuleInfoTL.get();
    }
    /**
     * 删除当前访问的是哪个模块 一般用不上 特殊情况使用
     */
    public static void clear() {
        jboltOfModuleInfoTL.remove();
    }

    /**
     * 获取当前用户ofModule 默认系统内置 1
     * @return
     */
    public static Integer getJboltOfModule(){
        JBoltOfModuleInfo moduleInfo = getJboltOfModuleInfo();
        return moduleInfo==null? JBoltOfModuleInfo.PLATFORM_INNER_ADMIN:moduleInfo.getOfModule();
    }

    /**
     * 获取当前用户ofModule
     * @return
     */
    public static String getJboltOfModuleLink(){
        JBoltOfModuleInfo moduleInfo = getJboltOfModuleInfo();
        return moduleInfo==null?null:moduleInfo.getOfModuleLink();
    }

    /**
     * 获取当前访问不是平台核心模块访问 为外部其他自定义模块
     * @return
     */
    public static boolean isNotPlatformInnerAdminCall(){
        return !isPlatformInnerAdminCall();
    }


    /**
     * 获取当前访问是否为平台核心模块访问 非外部其他自定义
     * @return
     */
    public static boolean isPlatformInnerAdminCall(){
        JBoltOfModuleInfo moduleInfo = getJboltOfModuleInfo();
        return moduleInfo==null?true:moduleInfo.isPlatformInnerAdminCall();
    }

    /**
     * 获取当前用户ofModule
     * @return
     */
    public static Long getJboltOfModuleLinkToLong(){
        JBoltOfModuleInfo moduleInfo = getJboltOfModuleInfo();
        if(moduleInfo==null){return null;}
        String link = moduleInfo.getOfModuleLink();
        if(link==null||link.length()==0){return null;}
        return Long.parseLong(link);
    }

    /**
     * 获取当前用户ofModule
     * @return
     */
    public static Integer getJboltOfModuleLinkToInt(){
        JBoltOfModuleInfo moduleInfo = getJboltOfModuleInfo();
        if(moduleInfo==null){return null;}
        String link = moduleInfo.getOfModuleLink();
        if(link==null||link.length()==0){return null;}
        return Integer.parseInt(link);
    }
}
